home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 7
/
Apprentice-Release7.iso
/
Source Code
/
Pascal
/
Snippets
/
PNL Libraries
/
MyVersionResource.p
< prev
next >
Wrap
Text File
|
1997-04-21
|
2KB
|
80 lines
unit MyVersionResource;
interface
uses
Types;
{$PUSH}
{$ALIGN MAC68K}
type
versionRecord = packed record
numericVersion: NumVersion;
countryCode: integer;
shortVersion: Str15;
longVersion: Str255;
name: Str63;
end;
{$ALIGN RESET}
{$POP}
procedure GetVersion (resfile: integer; var vers: versionRecord);
procedure SetVersionParamText (resfile: integer; c3: Str255);
implementation
uses
Resources, Memory, Dialogs, MyStrings;
procedure GetVersion (resfile: integer; var vers: versionRecord);
var
vh: Handle;
p: integer;
saved_resfile: integer;
begin
saved_resfile := CurResFile;
UseResFile( resfile );
vh := Get1Resource('vers', 1);
if vh = nil then begin
longint(vers.numericVersion) := $00002000;
vers.countryCode := 0;
vers.shortVersion := '0.0.0';
vers.longVersion := 'Unknown v0.0.0';
vers.name := 'Unknown';
end else begin
BlockMoveData(vh^, @vers, sizeof(vers));
BlockMoveData(Ptr(longint(vh^) + (longint(@vers.shortVersion) - longint(@vers)) + length(vers.shortVersion) + 1),
@vers.longVersion, sizeof(vers.longVersion));
if length(vers.shortVersion) >= sizeof(vers.shortVersion) then begin
{$PUSH}
{$R-}
vers.shortVersion[0] := chr(sizeof(vers.shortVersion) - 1);
{$POP}
end;
ReleaseResource(vh);
end;
p := Pos(vers.shortVersion, vers.longVersion);
while (p > 0) & (vers.longVersion[p] <> ' ') do begin
p := p - 1;
end;
p := p - 1;
if p < 1 then begin
p := 255;
end;
vers.name := TPcopy(vers.longVersion, 1, p);
UseResFile( saved_resfile );
end;
procedure SetVersionParamText (resfile: integer; c3: Str255);
var
vers: versionRecord;
begin
GetVersion(resfile, vers);
ParamText(vers.shortVersion, vers.longVersion, vers.name, c3);
end;
end.